package map01;

import java.util.HashMap;
/*
*  HashMap<K,V>中的方法:
*   HashMap Key值始终保持唯一,是通过Hashcode()方法和equals()方法保证的
*     如果两个Key的哈希值不同直接存入
*     如果两个Key的哈希值相同则比较equals方法
*           如果与其他的Key的equals方法均不同,则存入
*           一旦与任意一个Key的equals方法相同,新存入的key的value值会替换掉该key对应的老的value值
*     HashMap键值对的存取顺序不一定一致
* public V put(K key, V value):将键值对存入Map集合
*       关于put方法的返回值:
*           如果当前添加的key与map中的已有key都不相同,则直接将该key对应的value值存入,并返回null
*           如果当前添加的key与map中的已有key相同,此时会将key对应的新值覆盖掉老值,同时返回老值
*public V get(Object key):
*           根据key取出对应的值
*           如果key存在,则返回该key对应的value的值
*           如果key不存在,则返回null
*public int size():
*       返回map集合中键值对的个数
*public void clear():
*       清空集合中的所有键值对
* */
public class HashMapDemo01 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();
        //method04();
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(42, "abc");
        hm.put(52, "def");
        hm.put(1, "ghk");

        System.out.println(hm);
        hm.clear();
        System.out.println(hm);
    }

    private static void method04() {
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(42, "abc");
        hm.put(52, "def");
        hm.put(1, "ghk");

        System.out.println(hm);
        System.out.println(hm.size());//3
    }

    private static void method03() {
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(42, "abc");
        hm.put(52, "def");
        hm.put(1, "ghk");
        String str = hm.get(52);
        System.out.println(str);//def

        String str02 = hm.get(42);
        System.out.println(str02);//abc

        String str03 = hm.get(63);
        System.out.println(str03);//null
    }

    private static void method02() {
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(42, "abc");
        hm.put(52, "def");

        String str = hm.put(1, "ghk");
        System.out.println(str);//null
        System.out.println(hm);//{1=ghk, 52=def, 42=abc}

        String str02 = hm.put(1, "mn");
        System.out.println(str02);//ghk
        System.out.println(hm);//{1=mn, 52=def, 42=abc}
    }

    private static void method01() {
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(3, "abc");
        hm.put(6, "abc");

        System.out.println(hm.put(1, "ghk"));//null

        System.out.println(hm);
    }
}
